<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width">
<title></title>
</head>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
.box {
margin: 50px auto 0 auto;
width: 400px;
height: auto;
border: solid 1px #222;
		background:#B0BFFF;
}

/* 内容区域 */
#cont {
width: 400px;
height: 600px;
position: relative;
overflow: hidden;
}

/* 内容区域里面的go区域 */
#go {
width: 100%;
height: 600px;
position: absolute;
top: 0;
font: 700 60px '宋体';
text-align: center;
z-index: 99;
}
#go span {
cursor: pointer;
background-color:#4C005E;
border-bottom: solid 1px #222;
}

/* 内容区域里面的游戏区域 ，注意这里定位向上移了一行的距离*/
#main {
width: 400px;
height: 600px;
position: relative;
top: -150px;
}
/* 设置每一行的高度 */
.row {
width: 400px;
height: 100px;
}
/* 设置行里面的每一个格子 */
.row div {
width: 99px;
height: 149px;
border: solid 1px #222;
float: left;
border-top-width: 0;
border-left-width: 0;
cursor: pointer;
}
/* 计数区域 */
#count {
border-top: solid 1px #222;
width: 400px;
height: 50px;
font: 700 36px/50px '微软雅黑';
text-align: center;
}
</style>
<body>
<div class="box">

	<div id="cont">
		<div id="go">
			<span>点击开始</span>
		</div>
		<div id="main"></div>
	</div>

	<div id="count"></div>
</div>
</body>
<script type="text/javascript">
window.onload =function(){
//获取内容区里面得#main和#go，以及获取计数区。
var main = document.getElementById('main');
var go = document.getElementById('go');
var count = document.getElementById('count');
//设置四种颜色
cols = ['#1AAB8A', '#E15650', '#121B39', '#80A84E'];
//动态创建div
function CDiv(classname) {
	//创建div节点，为一行
	var Div = document.createElement('div')
	//生成随机数，Math.floor()是四舍五入的作用，产生的数永远不会大于4，产生的随机数表示那个有颜色的那一个
	index = Math.floor(Math.random() * 4)
	//设置class
	Div.className = classname

	//在一行里面动态添加四个div，一行里面的四块
	for (var i = 0; i < 4; i++) {
		var iDiv = document.createElement('div')
		Div.appendChild(iDiv)
	}

	//判断#main里面是否有元素
	if (main.children.length == 0) {
		main.appendChild(Div);
	} else {
		//如果有元素，则在该元素之前插入
		main.insertBefore(Div, main.children[0]);
	}
	//随机的设置四个div块的背景颜色
	Div.children[index].style.backgroundColor = cols[index];
	Div.children[index].className = "i";
}
function move(obj) {
//默认速度与计分
var speed = 5, num = 0;
//定义一个定时器
obj.timer = setInterval(function () {
	//速度
var step = parseInt(getComputedStyle(obj, null)['top']) + speed;
obj.style.top = step + 'px'
if (parseInt(getComputedStyle(obj, null)['top']) >= 0) {
	CDiv('row');
	obj.style.top = -150 + 'px';
}
if (obj.children.length == 6) {
	for (var i = 0; i < 4; i++) {
		if (obj.children[obj.children.length - 1].children[i].className == 'i') {
		//游戏结束
		obj.style.top = '-150px';
		count.innerHTML = '游戏结束,最高得分: ' + num;
		//关闭定时器
		clearInterval(obj.timer);
		//显示开始游戏
		go.children[0].innerHTML = '游戏结束';
		go.style.display = "block";
		}
	}
	obj.removeChild(obj.children[obj.children.length - 1]);
}
	//点击与计分
	obj.onmousedown = function (event) {
		//点击的不是白盒子
		// 兼容IE
		event = event || window.event;
	if ((event.target ? event.target : event.srcElement).className == 'i') {
		//点击后的盒子颜色
		(event.target ? event.target : event.srcElement).style.backgroundColor = "#bbb";
		//清除盒子标记
		(event.target ? event.target : event.srcElement).className = '';
		//计分
		num++;
		//显示得分
		count.innerHTML = '当前得分: ' + num;
	}
	else {
		//游戏结束
		obj.style.top = 0;
		count.innerHTML = '游戏结束,最高得分: ' + num;
		//关闭定时器
		clearInterval(obj.timer);
		//显示开始游戏
		go.children[0].innerHTML = '游戏结束';
		go.style.display = "block";
	}
	//盒子加速
	if (num % 10 == 0) {
		speed++;
	}
	}
	//松开触发停止
	obj.onmouseup = function (event) {
	}
}, 20)
}
go.children[0].onclick = function(){
	if (main.children.length) {
		//暴力清除main里面所有盒子
		main.innerHTML = '';
	}
	//清空计分
	count.innerHTML = '游戏开始';
	//隐藏开始盒子
	this.parentNode.style.display = "none";
	move(main);
}
}
</script>
</html>